const net = require('net');

const server = net.createServer(); // 创建一个服务器对象,用来等待客户端的连接


server.listen(8899,()=>{
    console.log('服务器监听端口8899')
}); //服务器监听端口

// server.on('listening',()=>{ //服务器监听端口事件
//     console.log('服务器开始监听端口')
// })



//某个连接到来的时候会触发该事件,事件的监听函数会得到一个socket对象
server.on('connection',(socket)=>{ //浏览器和postman在连接的时候会发送一个测试连接,因此访问localhost:8899会输出两次服务器被客户端连接
    console.log('服务器被客户端连接')
    const connectionId = Date.now(); // 为每个连接生成唯一ID,用于判断是否是同一个连接


    socket.on('data',chunk=>{ //监听客户端发来的消息
      
        console.log(chunk.toString("utf-8"));
        console.log('本次连接的connectionId',connectionId);
        // 返回一个html页面
        const html = '<h1>你好,客户端</h1>';
        const response = `HTTP/1.1 200 OK\r\nContent-Type: text/html; charset=utf-8\r\nContent-Length: ${Buffer.byteLength(html, 'utf8')}\r\nConnection: keep-alive\r\n\r\n${html}`;
        socket.write(response); //服务器给客户端发送消息
        // socket.end(); // 告诉客户端关闭连接,如果需要保持长连接的话,则不需要调用该方法
    })

    
    
    socket.on('end',()=>{ //监听连接关闭
    console.log('本次连接关闭')
    });
});



